﻿namespace JAAF.UI
{
    /// <summary>
    /// Describes the current status of a user interface process.
    /// </summary>
    public enum UIProcessStatusEnum
    {
        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> has been initialized but
        /// has not been started yet.
        /// </summary>
        Initialized = 0,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> is currently executing.
        /// </summary>
        Executing = 1,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> is currently executing
        /// and navigating to a different <see cref="IView">view</see>.
        /// </summary>
        Navigating = 2,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> is currently aborting execution.
        /// </summary>
        Aborting = 3,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> is about to complete successfully.
        /// </summary>
        Completing = 4,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> has started a child process
        /// that is executing under it's context.
        /// </summary>
        ExecutingChildProc = 5,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> has started a child processs
        /// that is executing modally under it's context.
        /// </summary>
        /// <remarks>
        /// When in this state no <see cref="IView">view</see> <see cref="UIProcess">process</see> cannot receive 
        /// </remarks>
        ExecutingModalChildProc = 6,

        /// <summary>
        /// Indicates that tthe <see cref="UIProcess">process</see> is currently resuming execution
        /// after a child process has aborted or has been completed.
        /// </summary>
        ResumingFromChildProc = 7,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> has completed succesfully.
        /// </summary>
        Completed = 8,

        /// <summary>
        /// Indicates that the <see cref="UIProcess">process</see> was aborted.
        /// </summary>
        Aborted = 9
    }
}